{
  "cells": [
    {
      "cell_type": "markdown",
      "source": [
        "# K-Nearest Neighbors Algorithm "
      ],
      "metadata": {}
    },
    {
      "cell_type": "markdown",
      "source": [
        "K-Nearest Neighbors (KNN) is  lazy learning algorithm and classification algorithms. In addition, KNN is the simplest methods in machine learning. KNN is used for to separated into classes to predict the classification for new point. "
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "import numpy as np\n",
        "import pandas as pd\n",
        "import matplotlib.pyplot as plt\n",
        "\n",
        "import warnings\n",
        "warnings.filterwarnings(\"ignore\")\n",
        "\n",
        "# fix_yahoo_finance is used to fetch data \n",
        "import fix_yahoo_finance as yf\n",
        "yf.pdr_override()"
      ],
      "outputs": [],
      "execution_count": 1,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "# input\n",
        "symbol = 'AMD'\n",
        "start = '2014-01-01'\n",
        "end = '2018-08-27'\n",
        "\n",
        "# Read data \n",
        "dataset = yf.download(symbol,start,end)\n",
        "\n",
        "# Only keep close columns \n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[*********************100%***********************]  1 of 1 downloaded\n"
          ]
        },
        {
          "output_type": "execute_result",
          "execution_count": 2,
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Adj Close</th>\n",
              "      <th>Volume</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Date</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>2014-01-02</th>\n",
              "      <td>3.85</td>\n",
              "      <td>3.98</td>\n",
              "      <td>3.84</td>\n",
              "      <td>3.95</td>\n",
              "      <td>3.95</td>\n",
              "      <td>20548400</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-03</th>\n",
              "      <td>3.98</td>\n",
              "      <td>4.00</td>\n",
              "      <td>3.88</td>\n",
              "      <td>4.00</td>\n",
              "      <td>4.00</td>\n",
              "      <td>22887200</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-06</th>\n",
              "      <td>4.01</td>\n",
              "      <td>4.18</td>\n",
              "      <td>3.99</td>\n",
              "      <td>4.13</td>\n",
              "      <td>4.13</td>\n",
              "      <td>42398300</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-07</th>\n",
              "      <td>4.19</td>\n",
              "      <td>4.25</td>\n",
              "      <td>4.11</td>\n",
              "      <td>4.18</td>\n",
              "      <td>4.18</td>\n",
              "      <td>42932100</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-08</th>\n",
              "      <td>4.23</td>\n",
              "      <td>4.26</td>\n",
              "      <td>4.14</td>\n",
              "      <td>4.18</td>\n",
              "      <td>4.18</td>\n",
              "      <td>30678700</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "            Open  High   Low  Close  Adj Close    Volume\n",
              "Date                                                    \n",
              "2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400\n",
              "2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200\n",
              "2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300\n",
              "2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100\n",
              "2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 2,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "dataset['Up_Down'] = np.where(dataset['Adj Close'].shift(-1) > dataset['Adj Close'], 1, -1)\n",
        "dataset.head()"
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 4,
          "data": {
            "text/html": [
              "<div>\n",
              "<style scoped>\n",
              "    .dataframe tbody tr th:only-of-type {\n",
              "        vertical-align: middle;\n",
              "    }\n",
              "\n",
              "    .dataframe tbody tr th {\n",
              "        vertical-align: top;\n",
              "    }\n",
              "\n",
              "    .dataframe thead th {\n",
              "        text-align: right;\n",
              "    }\n",
              "</style>\n",
              "<table border=\"1\" class=\"dataframe\">\n",
              "  <thead>\n",
              "    <tr style=\"text-align: right;\">\n",
              "      <th></th>\n",
              "      <th>Open</th>\n",
              "      <th>High</th>\n",
              "      <th>Low</th>\n",
              "      <th>Close</th>\n",
              "      <th>Adj Close</th>\n",
              "      <th>Volume</th>\n",
              "      <th>Up/Down</th>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>Date</th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "      <th></th>\n",
              "    </tr>\n",
              "  </thead>\n",
              "  <tbody>\n",
              "    <tr>\n",
              "      <th>2014-01-02</th>\n",
              "      <td>3.85</td>\n",
              "      <td>3.98</td>\n",
              "      <td>3.84</td>\n",
              "      <td>3.95</td>\n",
              "      <td>3.95</td>\n",
              "      <td>20548400</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-03</th>\n",
              "      <td>3.98</td>\n",
              "      <td>4.00</td>\n",
              "      <td>3.88</td>\n",
              "      <td>4.00</td>\n",
              "      <td>4.00</td>\n",
              "      <td>22887200</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-06</th>\n",
              "      <td>4.01</td>\n",
              "      <td>4.18</td>\n",
              "      <td>3.99</td>\n",
              "      <td>4.13</td>\n",
              "      <td>4.13</td>\n",
              "      <td>42398300</td>\n",
              "      <td>1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-07</th>\n",
              "      <td>4.19</td>\n",
              "      <td>4.25</td>\n",
              "      <td>4.11</td>\n",
              "      <td>4.18</td>\n",
              "      <td>4.18</td>\n",
              "      <td>42932100</td>\n",
              "      <td>-1</td>\n",
              "    </tr>\n",
              "    <tr>\n",
              "      <th>2014-01-08</th>\n",
              "      <td>4.23</td>\n",
              "      <td>4.26</td>\n",
              "      <td>4.14</td>\n",
              "      <td>4.18</td>\n",
              "      <td>4.18</td>\n",
              "      <td>30678700</td>\n",
              "      <td>-1</td>\n",
              "    </tr>\n",
              "  </tbody>\n",
              "</table>\n",
              "</div>"
            ],
            "text/plain": [
              "            Open  High   Low  Close  Adj Close    Volume  Up/Down\n",
              "Date                                                             \n",
              "2014-01-02  3.85  3.98  3.84   3.95       3.95  20548400        1\n",
              "2014-01-03  3.98  4.00  3.88   4.00       4.00  22887200        1\n",
              "2014-01-06  4.01  4.18  3.99   4.13       4.13  42398300        1\n",
              "2014-01-07  4.19  4.25  4.11   4.18       4.18  42932100       -1\n",
              "2014-01-08  4.23  4.26  4.14   4.18       4.18  30678700       -1"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 4,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Step 1: Preprocessing"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "X = dataset.iloc[ : , 1:4].values\n",
        "y = dataset.iloc[ : , 6].values"
      ],
      "outputs": [],
      "execution_count": 14,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Step 2: Train Test Split"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.model_selection import train_test_split  \n",
        "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.20)  "
      ],
      "outputs": [],
      "execution_count": 15,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "print(X_train.shape)\n",
        "print(y_train.shape)\n",
        "print(X_test.shape)\n",
        "print(y_test.shape)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "(937, 3)\n",
            "(937,)\n",
            "(235, 3)\n",
            "(235,)\n"
          ]
        }
      ],
      "execution_count": 16,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Step 3: Feature Scaling"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.preprocessing import StandardScaler  \n",
        "scaler = StandardScaler()  \n",
        "scaler.fit(X_train)\n",
        "\n",
        "X_train = scaler.transform(X_train)  \n",
        "X_test = scaler.transform(X_test)  "
      ],
      "outputs": [],
      "execution_count": 17,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Step 4: Training and Predictions"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.neighbors import KNeighborsClassifier  \n",
        "knn = KNeighborsClassifier(n_neighbors=5)  \n",
        "knn.fit(X_train, y_train)  "
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 18,
          "data": {
            "text/plain": [
              "KNeighborsClassifier(algorithm='auto', leaf_size=30, metric='minkowski',\n",
              "           metric_params=None, n_jobs=1, n_neighbors=5, p=2,\n",
              "           weights='uniform')"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 18,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "y_pred = knn.predict(X_test)"
      ],
      "outputs": [],
      "execution_count": 19,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "markdown",
      "source": [
        "Step 5: Evaluating the Algorithm"
      ],
      "metadata": {}
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import classification_report, confusion_matrix  \n",
        "print(confusion_matrix(y_test, y_pred))  \n",
        "print(classification_report(y_test, y_pred))"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "[[59 57]\n",
            " [61 58]]\n",
            "             precision    recall  f1-score   support\n",
            "\n",
            "         -1       0.49      0.51      0.50       116\n",
            "          1       0.50      0.49      0.50       119\n",
            "\n",
            "avg / total       0.50      0.50      0.50       235\n",
            "\n"
          ]
        }
      ],
      "execution_count": 20,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "error = []\n",
        "\n",
        "# Calculating error for K values between 1 and 40\n",
        "for i in range(1, 40):  \n",
        "    knn = KNeighborsClassifier(n_neighbors=i)\n",
        "    knn.fit(X_train, y_train)\n",
        "    pred_i = knn.predict(X_test)\n",
        "    error.append(np.mean(pred_i != y_test))"
      ],
      "outputs": [],
      "execution_count": 21,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "plt.figure(figsize=(12, 6))  \n",
        "plt.plot(range(1, 40), error, color='red', linestyle='dashed', marker='o',  \n",
        "         markerfacecolor='blue', markersize=10)\n",
        "plt.title('Error Rate K Value')  \n",
        "plt.xlabel('K Value')  \n",
        "plt.ylabel('Mean Error')  "
      ],
      "outputs": [
        {
          "output_type": "execute_result",
          "execution_count": 22,
          "data": {
            "text/plain": [
              "Text(0,0.5,'Mean Error')"
            ]
          },
          "metadata": {}
        },
        {
          "output_type": "display_data",
          "data": {
            "image/png": [
              "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\n"
            ],
            "text/plain": [
              "<Figure size 864x432 with 1 Axes>"
            ]
          },
          "metadata": {}
        }
      ],
      "execution_count": 22,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    },
    {
      "cell_type": "code",
      "source": [
        "from sklearn.metrics import accuracy_score\n",
        "\n",
        "for K in range(40):\n",
        "    K_value = K+1\n",
        "    knn = KNeighborsClassifier(n_neighbors = K_value, weights='uniform', algorithm='auto')\n",
        "    knn.fit(X_train, y_train) \n",
        "    y_pred = knn.predict(X_test)\n",
        "    print(\"Accuracy is \", accuracy_score(y_test,y_pred)*100,\"% for K-Value:\",K_value)"
      ],
      "outputs": [
        {
          "output_type": "stream",
          "name": "stdout",
          "text": [
            "Accuracy is  47.23404255319149 % for K-Value: 1\n",
            "Accuracy is  48.51063829787234 % for K-Value: 2\n",
            "Accuracy is  50.638297872340424 % for K-Value: 3\n",
            "Accuracy is  49.361702127659576 % for K-Value: 4\n",
            "Accuracy is  49.787234042553195 % for K-Value: 5\n",
            "Accuracy is  52.34042553191489 % for K-Value: 6\n",
            "Accuracy is  48.93617021276596 % for K-Value: 7\n",
            "Accuracy is  49.787234042553195 % for K-Value: 8\n",
            "Accuracy is  48.08510638297872 % for K-Value: 9\n",
            "Accuracy is  48.93617021276596 % for K-Value: 10\n",
            "Accuracy is  49.361702127659576 % for K-Value: 11\n",
            "Accuracy is  51.48936170212765 % for K-Value: 12\n",
            "Accuracy is  51.48936170212765 % for K-Value: 13\n",
            "Accuracy is  47.23404255319149 % for K-Value: 14\n",
            "Accuracy is  46.808510638297875 % for K-Value: 15\n",
            "Accuracy is  48.08510638297872 % for K-Value: 16\n",
            "Accuracy is  48.51063829787234 % for K-Value: 17\n",
            "Accuracy is  47.65957446808511 % for K-Value: 18\n",
            "Accuracy is  48.51063829787234 % for K-Value: 19\n",
            "Accuracy is  45.95744680851064 % for K-Value: 20\n",
            "Accuracy is  46.808510638297875 % for K-Value: 21\n",
            "Accuracy is  50.212765957446805 % for K-Value: 22\n",
            "Accuracy is  50.638297872340424 % for K-Value: 23\n",
            "Accuracy is  50.638297872340424 % for K-Value: 24\n",
            "Accuracy is  52.34042553191489 % for K-Value: 25\n",
            "Accuracy is  52.76595744680851 % for K-Value: 26\n",
            "Accuracy is  51.91489361702127 % for K-Value: 27\n",
            "Accuracy is  52.76595744680851 % for K-Value: 28\n",
            "Accuracy is  52.76595744680851 % for K-Value: 29\n",
            "Accuracy is  51.91489361702127 % for K-Value: 30\n",
            "Accuracy is  51.06382978723404 % for K-Value: 31\n",
            "Accuracy is  51.06382978723404 % for K-Value: 32\n",
            "Accuracy is  51.06382978723404 % for K-Value: 33\n",
            "Accuracy is  49.787234042553195 % for K-Value: 34\n",
            "Accuracy is  49.361702127659576 % for K-Value: 35\n",
            "Accuracy is  46.808510638297875 % for K-Value: 36\n",
            "Accuracy is  48.08510638297872 % for K-Value: 37\n",
            "Accuracy is  47.23404255319149 % for K-Value: 38\n",
            "Accuracy is  48.08510638297872 % for K-Value: 39\n",
            "Accuracy is  48.51063829787234 % for K-Value: 40\n"
          ]
        }
      ],
      "execution_count": 25,
      "metadata": {
        "collapsed": false,
        "outputHidden": false,
        "inputHidden": false
      }
    }
  ],
  "metadata": {
    "kernel_info": {
      "name": "python3"
    },
    "language_info": {
      "codemirror_mode": {
        "version": 3,
        "name": "ipython"
      },
      "version": "3.5.5",
      "file_extension": ".py",
      "name": "python",
      "pygments_lexer": "ipython3",
      "mimetype": "text/x-python",
      "nbconvert_exporter": "python"
    },
    "kernelspec": {
      "name": "python3",
      "language": "python",
      "display_name": "Python 3"
    },
    "nteract": {
      "version": "0.12.2"
    }
  },
  "nbformat": 4,
  "nbformat_minor": 4
}